package com.youlai.boot.system.model.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;

import java.time.LocalDateTime;

/**
 * 全局用户实体
 * 用于多租户系统中的用户统一管理
 * 存储在主数据源的 global_sys_user 表
 *
 * @author youlaitech
 * @since 2025-11-08
 */
@Getter
@Setter
@TableName("global_sys_user")
public class GlobalSysUser {

    /**
     * 用户ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 用户名（可为空，首次微信登录可能没有）
     */
    private String username;

    /**
     * 昵称
     */
    private String nickname;

    /**
     * 性别((1-男 2-女 0-保密)
     */
    private Integer gender;

    /**
     * 手机号
     */
    private String mobile;

    /**
     * 邮箱
     */
    private String email;

    /**
     * 头像URL
     */
    private String avatar;

    /**
     * 状态(1-正常 0-禁用)
     */
    private Integer status;

    /**
     * 微信 OpenID（小程序唯一标识）
     */
    private String openid;

    /**
     * 微信 UnionID（同一开放平台下唯一标识）
     */
    private String unionid;

    /**
     * 所属租户ID（关联 sys_tenant.id）
     */
    private Long tenantId;

    /**
     * 所属租户编码
     */
    private String tenantCode;

    /**
     * 用户类型：1-系统用户 2-外部用户
     */
    private Integer userType;

    /**
     * 是否主账号：1-是 0-否（用户在租户中的主账号）
     */
    private Integer isPrimary;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 创建人ID
     */
    @TableField(fill = FieldFill.INSERT)
    private Long createBy;

    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.UPDATE)
    private LocalDateTime updateTime;

    /**
     * 更新人ID
     */
    @TableField(fill = FieldFill.UPDATE)
    private Long updateBy;

    /**
     * 逻辑删除(1-已删除 0-未删除)
     */
    @TableLogic(value = "0", delval = "1")
    private Integer isDeleted;
}

